<?php

require_once 'plugin/DBPlugin.php';
require_once 'plugin/Thumbnail.php';

/**
 * Manejo de la seccion Obras
 */
class ObrasDBPlugin extends DBPlugin {


	/**
	 * Obtener una obra por id
	 */	
	public static function getById($id) {

		require_once ('include/connect.php');
		
		$sql = "SELECT * FROM `obras` where idobra = ".$id;
		$result = mysql_query($sql);
		$num = mysql_num_rows($result);
		if ($num > 0) {
			$row = mysql_fetch_array($result);
			return $row;
		}
		return null;
	
	}


	/**
	 * Obtiene las obras
	 */	
	public static function getObras($start, $totalPage) {

		require_once ('include/connect.php');
		
		$sql = "SELECT * FROM `obras`".
				" LIMIT ". $start." , ". $totalPage;
		$results = mysql_query($sql);
	
		// Fetch
		$obras = array();
		while($obra = mysql_fetch_assoc($results)) {
			$obras[] = $obra;
		}		
		
		return $obras;
	
	}
	
	/**
	 * Obtiene la cantidad de obras
	 */	
	public static function getObrasCount() {

		require_once ('include/connect.php');
		
		$sql = "SELECT count(*) as cant FROM `obras`";
		$result = mysql_query($sql);
		$num = mysql_num_rows($result);
		if ($num > 0) {
			$row = mysql_fetch_array($result);
			return $row[cant];
		}		
		return 0;
	
	}

	
	/**
	 * Publica / no publica una obra
	 */
	public static function publish($id) {

		require_once ('include/connect.php');
		
		$obra = ObrasDBPlugin::getById($id);

		$sql = "";
		if ($obra[published] == 1) {
			$sql = "UPDATE `obras`".
					" SET published=0".
					" WHERE idobra=".$id;
		}
		else {
			$sql = "UPDATE `obras`".
					" SET published=1".
					" WHERE idobra=".$id;		
		}
		
		mysql_query($sql);
	
	}	
	

	
	/**
	 * Agrega una nueva obra
	 */	
	public static function add($nombre, $superficie, $fechaconstruccion, $tipoobra) {

		require_once ('include/connect.php');
		
		$sql = "INSERT INTO `obras` (`idobra`, `nombre`, `superficie`, `fechaconstruccion`, `published`, `imagecount`, `tipoobra`)".
				" values (NULL , '". $nombre ."', ". $superficie .", '".$fechaconstruccion ."', '1', '0', '" . $tipoobra . "')";

		$result = mysql_query($sql);

		return $result;
	
	}
	
	
	
	/**
	 * Actualiza una obra
	 */	
	public static function update($id, $nombre, $superficie, $fechaconstruccion, $tipoobra) {

		require_once ('include/connect.php');
		
		$sql = "UPDATE `obras`".
					" SET nombre='".$nombre."',".
					" superficie='".$superficie."',".
					" fechaconstruccion='".$fechaconstruccion."',".
					" tipoobra='".$tipoobra."'".
					" WHERE idobra=".$id;
		$result = mysql_query($sql);

		return $result;
	
	}

	
	/**
	 * Elimina una obra
	 */	
	public static function remove($id) {

		require_once ('include/connect.php');
		
		// Elimina todas las imagenes de la obra
		$results = ObrasDBPlugin::getImages($id, "foto");
		while($image = mysql_fetch_assoc($results)) {
			ObrasDBPlugin::removeImage($id, $image[idimage]);
		}
		
		// Elimina la obra
		$sql = "DELETE FROM `obras`".
					" WHERE idobra=".$id;
		$result = mysql_query($sql);

		return $result;
	
	}
	
	
	/**
	 * Elimina varias obras
	 */	
	public static function removeObras($idobras) {
	
		$idobras = explode(".",$idobras);
		for($i = 0; $i < count($idobras); $i++) {
			ObrasDBPlugin::remove($idobras[$i]);
		}
	}
	
	
	
	/*
	 * Agrega una imagen a la obra
	 */
	public static function addImage($idObra, $name, $tmpName) {

		require_once ('include/connect.php');
		require('conf/configuration.php');

		if (!file_exists($tmpName)) {
			$message = "Error: La imagen no se ha cargado, intente nuevamente";
			return $message;		
		}
		
		// Obtener la cantidad de imagenes
		$obra = ObrasDBPlugin::getById($idObra);
		$nextImageCount = $obra[imagecount] + 1;
	
		// Copio la imagen a images/obra
		require_once 'plugin/FileUtilityPlugin.php';
		$extension = FileUtilityPlugin::getExtension($name);
		$newFileName =  'obra' . $idObra . '_' . $nextImageCount . '.' . $extension;
		//while (file_exists("../images/obra/" . $newFileName)) {
		while (file_exists($imagesDir[obras]. $newFileName)) {
			$nextImageCount++;
			$newFileName =  'obra' . $idObra . '_' . $nextImageCount . '.' . $extension;
			
		}
		//$path = "../images/obra/" . $newFileName;
		$path = $imagesDir[obras] . $newFileName;
		copy($tmpName, $path);
				
		// Redimensionar la imagen  
		$thumb = new Thumbnail($imagesDir[obras] . $newFileName);
 		$thumb->resize($commonImage[width], $commonImage[height]);
		$thumb->save($imagesDir[obras] . $newFileName, $commonImage[quality]);
		

		// Inserta la imagen en la DB
		$sql = "insert into `images` (`idimage`, `tablename`, `iditem`, `file`, `filetype`, `order`, `imagetype`)".
				" values (NULL, 'obras', " . $idObra . ", '". $newFileName ."', '".$extension. "', null, 'foto')";
		$result = mysql_query($sql);

		// Create thumbnail
		$thumb = new Thumbnail($imagesDir[obras] . $newFileName);
 		$thumb->resize($thumbnailProp[width], $thumbnailProp[height]);
		$thumb->save($imagesDir[obrasSmall] . $newFileName, $thumbnailProp[quality]);
		
		
		// Incremento imagecount
		$sql = "update `obras`".
				" set imagecount = imagecount + 1".
				" where idobra=".$idObra;
		$result = mysql_query($sql);	

		$message = "Se ha agregado la imagen correctamente";
		return $message;
	
	}
	
	
	/**
	 * Obtiene las imagenes de una obra
	 */
	public static function getImages($idObra, $imagetype) {

		require_once ('include/connect.php');
	
		$sql = "select * from `images`".
		 		" where tablename = 'obras'".
				" and iditem = ".$idObra.
				" and imagetype = '".$imagetype."'";
		$results = mysql_query($sql);
		
		$images = array();
		while($image = mysql_fetch_assoc($results)) {
			$images[] = $image;
		}
		
		return $images;
	}

	
	
	/*
	 * Obtiene una imagen por idimage
	 */
	public static function getImageById($id) {

		require_once ('include/connect.php');
		
		$sql = "select * from `images`".
				" where idimage = ".$id;
		$result = mysql_query($sql);
		$num = mysql_num_rows($result);
		if ($num > 0) {
			$row = mysql_fetch_array($result);
			return $row;
		}
		return null;
	
	}
	
	

	/**
	 * Elimina una imagen
	 */	
	public static function removeImage($idObra, $idimage) {

		require_once ('include/connect.php');
		require('conf/configuration.php');
		require_once 'plugin/FileUtilityPlugin.php';
		
		// Elimino el archivo de la imagen
		$image = ObrasDBPlugin::getImageById($idimage);
		FileUtilityPlugin::remove($imagesDir[obras].$image[file]);
		FileUtilityPlugin::remove($imagesDir[obrasSmall].$image[file]);
		
		// Decremento imagecount
		$sql = "update `obras`".
				" set imagecount = imagecount - 1".
				" where idobra=".$idObra;
		$result = mysql_query($sql);
		
		require_once 'plugin/ImagesDBPlugin.php';
		ImagesDBPlugin::remove($idimage);
		
		return $result;
	
	}

	

	/**
	* Elimina varias imagenes
	*/
	public static function removeImages($idObra, $idimages) {
	
		$idimages = explode(".",$idimages);
		for($i = 0; $i < count($idimages); $i++) {
			ObrasDBPlugin::removeImage($idObra, $idimages[$i]);
		}
	}

	
	
	/**
	* Guarda la descripcion de una imagen
	*/
	public static function saveImgInfo($idImage, $info) {
	
		require_once ('include/connect.php');
	
		$sql = "UPDATE `images` ";
		$sql .= " SET info ='" . $info . "'";
		$sql .= " WHERE idimage=". $idImage;
		
		mysql_query($sql);
		
	}
	
}

?>